perm filename GREEKL.MF[CM,DEK]1 blob
sn#796684 filedate 1985-06-24 generic text, type C, neo UTF8
COMMENT ā VALID 00031 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00004 00002 % This lowercase Greek alphabet was prepared by D. E. Knuth in December, 1979,
C00005 00003 cmchar "Lowercase Greek alpha"
C00007 00004 cmchar "Lowercase Greek beta"
C00009 00005 cmchar "Lowercase Greek gamma"
C00011 00006 cmchar "Lowercase Greek delta"
C00013 00007 cmchar "Lowercase Greek epsilon"
C00015 00008 cmchar "Lowercase Greek zeta"
C00017 00009 cmchar "Lowercase Greek eta"
C00018 00010 cmchar "Lowercase Greek theta"
C00019 00011 cmchar "Lowercase Greek iota"
C00020 00012 cmchar "Lowercase Greek kappa"
C00022 00013 cmchar "Lowercase Greek lambda"
C00023 00014 cmchar "Lowercase Greek mu"
C00025 00015 cmchar "Lowercase Greek nu"
C00027 00016 cmchar "Lowercase Greek xi"
C00030 00017 cmchar "Lowercase Greek pi"
C00031 00018 cmchar "Lowercase Greek rho"
C00032 00019 cmchar "Lowercase Greek sigma"
C00033 00020 cmchar "Lowercase Greek tau"
C00034 00021 cmchar "Lowercase Greek upsilon"
C00035 00022 cmchar "Lowercase Greek phi"
C00037 00023 cmchar "Lowercase Greek chi"
C00039 00024 cmchar "Lowercase Greek psi"
C00041 00025 cmchar "Lowercase Greek omega"
C00043 00026 cmchar "Variant lowercase Greek epsilon"
C00045 00027 cmchar "Variant lowercase Greek theta"
C00047 00028 cmchar "Variant lowercase Greek pi"
C00049 00029 cmchar "Variant lowercase Greek rho"
C00051 00030 cmchar "Variant lowercase Greek sigma"
C00053 00031 cmchar "Variant lowercase Greek phi"
C00055 ENDMK
Cā;
% This lowercase Greek alphabet was prepared by D. E. Knuth in December, 1979,
% inspired by the Monotype faces used in {\sl The Art of Computer Programming}.
% (It has been designed for math formulas, not Greek texts.)
% Character codes \0013--\0047 are generated.
cmchar "Lowercase Greek alpha";
beginchar(oct"013",11u#,x_height#,0);
italcorr max(1/3x_height#*slant+.5hair#+.5u#,x_height#*slant-.5u#);
adjust_fit(0,0); pickup fine.nib;
pos0(hair,0); pos1(vair,-90); pos2(curve,-180); pos3(vair,-270);
z4=(w-3.25u,9/16h); z5=(w-2.75u,.5[vair,y4]);
numeric theta; theta=angle(z4-z5)-90;
pos4(stem,theta); pos5(stem,theta);
pos6(vair,90); pos7(hair,180);
rt x0r=round(w-u); x1=x3=.5w-u; lft x2r=round(1.5u-.5curve);
x6=w-u; x7+.5hair=round(w+.5hair-epsilon);
top y0=round(.8[bar_height,h]); bot y1r=bot y6l=-oo;
y2=.5[y1,y3]; top y3r=h+oo; y7=1/4bar_height;
filldraw stroke z0e{down}...pulled_arc.e(1,2) & pulled_arc.e(2,3)
...z4e---z5e...z6e{right}...{up}z7e; % diagonal, bowl, and hook
math_fit(-.3x_height#*slant+.5curve#-u#,1/3x_height#*slant+.5hair#+.5u#);
penlabels(0,1,2,3,4,5,6,7); endchar;
cmchar "Lowercase Greek beta";
beginchar(oct"014",9.5u#,asc_height#,desc_depth#);
italcorr .5[x_height#,asc_height#]*slant-u#;
adjust_fit(0,0); pickup fine.nib;
pos0(hair,180); pos1(hair,180); pos2(vair,90);
pos3(stem,0); pos4(vair,-90); pos5(hair,-180);
pos6(vair,-270); pos7(curve,-360); pos8(vair,-450); pos9(hair,-540);
x0=x1=x9; lft x0l=round(1.5u-.5hair); x2=x4=x6=x8=.5w+.25u;
rt x3r=round(w-1.5u); rt x7r=round(w-1.5u+.5curve); rt x5l=round(x4-u);
bot y0=-d; y1=top y6r=x_height; top y2r=h+oo; y3=.5[y2,y4]; y5=.5[y4,y6];
top y6r-bot y4r=vstem; bot y8=-oo; y7=y9=.5[y6,y8];
if y6l<y4l: y6l:=y4l:=y5; fi
filldraw stroke z0e---z1e...pulled_arc.e(2,3)
& pulled_arc.e(3,4)...{up}z5e; % stem and upper bowl
filldraw stroke z5e{up}...pulled_arc.e(6,7)
& pulled_arc.e(7,8)...{up}z9e; % lower bowl
math_fit(desc_depth#*slant+.5hair#-u#,.7x_height#*slant+.5curve#-1.5u#);
penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
cmchar "Lowercase Greek gamma";
beginchar(oct"015",10u#,x_height#,desc_depth#);
italcorr x_height#*slant-.5u#;
adjust_fit(0,0); pickup fine.nib;
pos1(hair,180); pos2(vstem+dw,90);
pos4(hair,0); pos5(vair,-90); pos6(hair,-180); pos7(hair,-180);
bot y1=.5772156649h; top y2r=h+oo; y4=y6=-.5d; bot y5r=-d-o; top y7=h;
lft x1r=round(.5u-.5hair); x2=3u; rt x4r=round(w-u); x5=.5[x4,x6];
rt x4r-lft x6r=round(1/3[hair,stem]); x7=x4;
if x4l<x6l: x4l:=x6l:=x5; fi
pos3(hair,angle(z4-z2)+90); x3=superness[x2,x4]; y3=superness[y4,y2];
filldraw stroke z1e{up}...z2e{right}...z3e{z4-z2}...z4e{down}...{left}z5e; % arc
filldraw stroke z5e{left}...z6e{up}..{2(x7-x6),y7-y6}z7e; % stem
math_fit(-.5772156649x_height#*slant,ic#-.5u#);
penlabels(1,2,3,4,5,6,7); endchar;
cmchar "Lowercase Greek delta";
beginchar(oct"016",8u#,asc_height#,0);
italcorr .9asc_height#*slant+.5hair#-1.5u#;
adjust_fit(0,0); pickup fine.nib;
pos1(hair,-180); pos2(vair,-90);
numeric theta; theta=angle(18u,-h);
pos3(stem,theta+90); pos4(stem,theta+90); pos5(round(1/4[hair,stem]),20);
pos6(vair,-90); pos7(curve,-180); pos8(vair,-270);
rt x1l=round(w-2u+.5hair); x2=.5w; x3r=3u; rt x5r=round(w-u);
x4=x6=x8=.5w+.5u; lft x7r=round(1.5u-.5curve);
y1=.9h; top y2l=h+oo; top y8r=x_height+oo; y4=y8;
z4-z3=whatever*(18u,-h); y5=y7=.5[y6,y8]; bot y6=-oo;
filldraw stroke z1e{x2-x1,3(y2-y1)}...z2e{left}...z3e---z4e
....z5e{down}...pulled_arc.e(6,7) & pulled_arc.e(7,8); % hook and bowl
math_fit(-.3x_height#*slant+.5curve#-u#,.7x_height#*slant-.5u#);
penlabels(1,2,3,4,5,6,7,8); endchar;
cmchar "Lowercase Greek epsilon";
beginchar(oct"017",8u#,x_height#,0);
italcorr x_height#*slant+.5hair#-2u#;
adjust_fit(0,0); pickup fine.nib;
pos0(bar,90); pos1(bar,90); pos2(curve,180);
pos3(vair,270); pos4(hair,300); pos6(bar,90); pos7(bar,90);
x1=.5w+.5u; x0=x1+u; lft x2r=round(1.5u-.5curve); x3=.5[x0,x1];
x4r=good.x(w-u); x5=w+.5u; x6=x0; z7=z2l;
top y0r=top y1r=h; y2=y5=y6=bar_height; bot y3r=-oo;
path p; p=z3r{right}...{up}z5;
numeric t; t=ypart(((x4r,y3r)--(x4r,y5))intersectiontimes p);
y4r=ypart point t of p;
filldraw circ_stroke z0e..pulled_arc.e(1,2) & pulled_arc.e(2,3)
...z4e{direction t of p}; % arc
filldraw circ_stroke z6e--z7e; % bar
math_fit(-.3x_height#*slant+.5curve#-u#,ic#);
penlabels(0,1,2,3,4,5,6,7); endchar;
cmchar "Lowercase Greek zeta";
beginchar(oct"020",7u#,.25[x_height#,asc_height#],min(desc_depth#,.5x_height#));
italcorr x_height#*slant;
adjust_fit(0,0); pickup fine.nib;
pos0(hair,-360); pos1(vair,-270); pos2(hair,-180); pos3(vair,-90);
numeric theta; theta=90-angle(11u,x_height); slope:=-x_height/11u;
pos6(stem,theta); pos7(vair,-90); pos8(vair,-135);
lft x0l=round.5w; x1=x3=.5[x0,x2]; rt x2l=(w-.5u);
top y0=h; top y3l=x_height=bot y1l+vstem; y2=.5[y1,y3];
if y1r>y3r: y1r:=y3r:=y2; fi
lft x4l=round u; x4r-x4l=round(.5[vair,stem])-fine;
x6=x7=w-2u; x8=.5w-.5u; y6=0; y8=-3/4d-oo; bot y7r=-d-oo;
ellipse_set(3l,4l,5l,6l); ellipse_set(3r,4r,5r,6r); y4=y4r;
filldraw circ_stroke z0e{down}...z1e{right}...{up}z2e; % opening hook
filldraw circ_stroke z8e{x7-x8,2(y7-y8)}...z7e{right}...z6e
---z5e...{up}z4e...{right}z3e...{down}z2e; % main stroke
math_fit(-.5x_height#*slant-.5u#,0);
penlabels(0,1,2,3,4,5,6,7,8); endchar;
cmchar "Lowercase Greek eta";
beginchar(oct"021",9u#,x_height#,desc_depth#);
italcorr .8x_height#*slant+.5stem#-u#;
adjust_fit(0,0); pickup fine.nib;
x0=0; x1=x2; pos2(stem,0); lft x2l=round(2.5u-.5stem); y2-.5stem=-oo;
hook_in(0,a,1); % opening hook
filldraw circ_stroke z2e--z1e; % left stem
x4+.5stem=round(w-1.5u+.5stem); ital_arch(2,3,4); % arch
pos5(stem,0); x5=x4; y5-.5stem=-d-o;
filldraw circ_stroke z5e--z4e; % right stem
math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#-1/3x_height#*slant);
penlabels(0,a,1,2,3,4,5); endchar;
cmchar "Lowercase Greek theta";
beginchar(oct"022",8.25u#,asc_height#,0);
italcorr .7asc_height#*slant+.5curve#-u#;
adjust_fit(0,0); pickup fine.nib;
pos1(vair,90); pos2(curve,180); pos3(vair,270); pos4(curve,360);
x1=x3=.5w; lft x2r=round(1.5u-.5curve); x4=w-x2;
top y1r=h+oo; y2=y4=.5[y1,y3]; bot y3r=-oo;
filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
& pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl
pos2'(bar,90); pos4'(bar,90); z2'=z2l; z4'=z4l;
filldraw stroke z2'e--z4'e; % bar
math_fit(-.3asc_height#*slant-u#+.5curve#,ic#-.5u#);
penlabels(1,2,3,4); endchar;
cmchar "Lowercase Greek iota";
beginchar(oct"023",5u#,x_height#,0);
italcorr 1/3x_height#*slant+.5hair#+.5u#;
adjust_fit(if monospace: u#,u# else: 0,0 fi); pickup fine.nib;
pos1(stem,0); lft x1l=round(1.5u-.5stem); y1+.5stem=h+oo;
x2=x1-.25u; x4=w; hook_out(2,3,4)(skewed); % closing hook
filldraw circ_stroke z1e{down}...{-u,-x_height}z2e; % stem
math_fit(0,ic#); penlabels(1,2,3,4); endchar;
cmchar "Lowercase Greek kappa";
beginchar(oct"024",9u#,x_height#,0);
italcorr 1/3x_height#*slant+.5hair#+.5u#;
adjust_fit(0,0); pickup fine.nib;
pos1(stem,0); pos2(stem,0); pos3(vair,90); pos4(vair,90); pos5(flare,90);
x1=x2=x3; lft x1l=round(1.5u-.5stem); y1+.5stem=h+oo; y2-.5stem=-oo;
filldraw z1l---z2l..z2r---z1r..cycle; % stem
y3=bar_height; top y4r=h; x4+.5flare=round(w-1.5u); z5r=z4r;
path p,q; p=z3l{right}..{right}z4l; q=z5r{right}..z5l{left}...cycle;
numeric t; t=ypart(p intersectiontimes q);
filldraw stroke z3e{right}..{right}z4e; % upper diagonal
filldraw subpath(0,t) of q--cycle; % bulb
pos7(stem,0); pos8(vair,90); pos9(hair,180);
x9+.5hair=round(w+.5hair-epsilon); y9=1/3x_height;
lft x7l=round(w-2.75u-.5stem); y7=1/2y3; x8=w-1.2u; bot y8l=-oo;
filldraw stroke z3e{right}..z7e{down}..z8{right}..{up}z9; % lower diagonal
math_fit(0,ic#); penlabels(1,2,3,4,5,7,8,9); endchar;
cmchar "Lowercase Greek lambda";
beginchar(oct"025",10.5u#,asc_height#,0);
adjust_fit(0,0); pickup fine.nib;
pos1(vair,90); lft x1=round .1u; top y1r=h;
x2=x1+2u; y2=.7[x_height,h]; x3=w-2u; y3=.07h; bot y4=-oo;
z4-(.25u,0)=whatever[z2,z3]; numeric theta; theta=angle(z2-z3)-90;
pos2(stem,theta); pos3(stem,theta); pos4(stem,0);
filldraw circ_stroke z1e{right}...z2e---z3e
...{2(x4e-x3e),y4e-y3e}z4e; % long diagonal
y5=.5[bar_height,x_height]; z5=whatever[z2,z3];
x6=1.5u; y6-.5stem=-oo; pos5(hair,theta-90); pos6(stem,angle(z5-z6)-90);
filldraw circ_stroke z6e--z5e; % short diagonal
penlabels(1,2,3,4,5,6); endchar;
cmchar "Lowercase Greek mu";
beginchar(oct"026",9u#,x_height#,desc_depth#);
italcorr 1/3x_height#*slant+.5hair#+.5u#;
adjust_fit(0,0); pickup fine.nib; interim superness:=more_super;
pos1(stem,-180); pos2(stem,-180); x1=x2=x3; lft x1r=round(1.5u-.5stem);
y1+.5stem=h+oo; y2-.5stem=-d-o;
filldraw z1r---z2r..z2l---z1l..cycle; % left stem
pos3(stem,-180); pos4(vair,-90); pos5(hair,0); x4=.5[x3,x5];
pos6(stem,0); rt x6r=round(w-2.5u+.5stem);
x5=x6=x7; x9=w; hook_out(7,8,9); % closing hook
y3=.7[y4,y5]; bot y4r=-oo; y5=.57h; y6+.5stem=h;
filldraw stroke super_arc.e(3,4)...{up}z5e; % left stem and arc
filldraw circ_stroke z6e--z7e; % right stem
math_fit(desc_depth#*slant+.5stem#-u#,ic#);
penlabels(1,2,3,4,5,6,7,8,9); endchar;
cmchar "Lowercase Greek nu";
beginchar(oct"027",8.5u#,x_height#,0);
italcorr x_height#*slant+.5stem#-u#;
adjust_fit(0,0); pickup fine.nib;
pos3(vair,-90); pos4(stem,0); bot y3r=0; y4+.5stem=h+oo;
x3-.5stem=round(1.5u-.5stem); x4+.5stem=round(w-1.5u+.5stem);
filldraw circ_stroke z4e{down}...{-36u,-h}z3e; % diagonal
pickup tiny.nib; pos1(stem,0); pos2(stem,0);
top y1=h+min(oo,serif_drop); bot y2=0; x1=x2=x3;
z=((z4{down}...{-36u,-h}z3)intersectionpoint((x2r,0)--(x2r,h)));
filldraw z1l--z2l--z--z1r--cycle; % stem
sloped_serif.l(1,2,a,1/3,jut,serif_drop); % upper left serif
math_fit(0,ic#-1/3x_height#*slant-.5u#); penlabels(1,2,3,4); endchar;
cmchar "Lowercase Greek xi";
beginchar(oct"030",9u#,asc_height#,desc_depth#);
italcorr .75[x_height#,asc_height#]*slant-2u#;
adjust_fit(0,0); pickup fine.nib;
pos10(hair,-720); pos11(vair,-630); pos12(hair,-540); pos13(vair,-450);
lft x10l=round 1/3w; x11=x13=.5[x10,x12]; rt x12l=round(w-2.5u);
top y10=h; top y13l=bot y11l+vstem=round(y10-.25(h-x_height));
y12=.5[y11,y13]; if y11r>y13r: y11r:=y13r:=y12; fi
pos0(curve,-360); pos1(vair,-270); pos2(hair,-180); pos3(vair,-90);
numeric theta; theta=90-angle(22u,x_height); slope:=-x_height/22u;
pos6(stem,theta); pos7(vair,-90); pos8(vair,-135);
lft x0l=round u; x1=x3=x11; x2=x12;
y0=.5[y13,y1]; top y3l=round .5h=bot y1l+vstem; y2=.5[y1,y3];
if y1r>y3r: y1r:=y3r:=y2; fi
lft x4l=round u; x4r-x4l=round(.5[vair,stem])-fine;
x6=x7=w-2u; x8=.5w+.5u; y6=-1/3d; y8=-3/4d-oo; bot y7r=-d-oo;
ellipse_set(3l,4l,5l,6l); ellipse_set(3r,4r,5r,6r); y4=y4r;
filldraw circ_stroke z10e{down}...z11e{right}...{up}z12e; % opening hook
filldraw stroke z12e{up}...z13e{left}...z0e{down}
...z1e{right}...{up}z2e; % upper arc
filldraw circ_stroke z8e{x7-x8,2(y7-y8)}...z7e{right}...z6e
---z5e...{up}z4e...{right}z3e...{down}z2e; % main stroke
math_fit(.5u#+.2asc_height#*slant,0);
penlabels(0,1,2,3,4,5,6,7,8,10,11,12,13); endchar;
cmchar "Lowercase Greek pi";
beginchar(oct"031",10u#,x_height#,0);
italcorr x_height#*slant+.5stem#-u#;
adjust_fit(0,0); pi_stroke; % hook and bar
pos4(hair,0); pos6(hair,0); x4=3.5u; x6=w-4u; y4=y6=y2;
x5=3u; x7=w-2.5u; y5=y7=.5stem-oo;
pair v[]; v1=(z4-z5) xscaled 3.14159; v2=(z6-z7) xscaled 3.14159;
pos5(stem,angle v1-90); pos7(stem,angle v2-90);
filldraw circ_stroke z5e{v1}...{up}z4e; % left stem
filldraw circ_stroke z7e{v2}...{up}z6e; % right stem
math_fit(-.7x_height#*slant+.5hair#+.5u#,ic#-1/3x_height#*slant);
penlabels(1,2,3,4,5,6,7); endchar;
cmchar "Lowercase Greek rho";
beginchar(oct"032",8.25u#,x_height#,desc_depth#);
italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi;
adjust_fit(0,0); pickup fine.nib;
pos1(stem,180); pos2(stem,180); pos3(vair,90);
pos4(curve,0); pos5(vair,-90); pos6(hair,-180);
lft x2r=round(1.5u-.5stem); x1=x2=x6; x3=x5=.5[x2,x4];
rt x4r=round(w-1.5u+.5curve);
y1-.5stem=-d-o; y2=y4=y6=.5[y3,y5]; top y3r=h+oo; bot y5r=-oo;
filldraw circ_stroke z1e..pulled_arc.e(2,3) & pulled_arc.e(3,4)
& pulled_arc.e(4,5) & pulled_arc.e(5,6); % stem and bowl
math_fit(desc_depth#*slant+.5stem#-u#,ic#); penlabels(1,2,3,4,5,6); endchar;
cmchar "Lowercase Greek sigma";
beginchar(oct"033",10.25u#,x_height#,0);
italcorr x_height#*slant+.5stem#-u#;
adjust_fit(0,0); pickup fine.nib;
pos1(vstem,90); pos2(stem,0); pos3(vair,-90);
pos4(stem,-180); pos5(vstem,-270); pos6(vstem,-270);
x1=x3=x5=.5[x2,x4]; rt x2r=round(w-2.5u); lft x4r=round(1.5u-.5curve);x6=w-1.5u;
top y1r=h; y2=y4=.5[y1,y3]; bot y3r=-oo; y5=y6=y1;
filldraw circ_stroke z6e..pulled_arc.e(5,4) & pulled_arc.e(4,3)
& pulled_arc.e(3,2) & pulled_arc.e(2,1); % ear and bowl
math_fit(-.3x_height#*slant+.5curve#-u#,ic#-1/3x_height#*slant);
penlabels(1,2,3,4,5,6); endchar;
cmchar "Lowercase Greek tau";
beginchar(oct"034",9u#,x_height#,0);
italcorr x_height#*slant+.5stem#-u#;
adjust_fit(0,0); pi_stroke; % hook and bar
pos4(hair,0); pos5(stem,0);
x4=x5; x5-.5stem=round(.5w-.5u-.5stem); y4=y2; y5-.5stem=-oo;
filldraw circ_stroke z5e--z4e; % stem
math_fit(-.7x_height#*slant+.5hair#+.5u#,-.5u#); penlabels(1,2,3,4,5); endchar;
cmchar "Lowercase Greek upsilon";
beginchar(oct"035",9u#,x_height#,0);
italcorr x_height#*slant;
adjust_fit(0,0); pickup fine.nib; interim superness:=more_super;
x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=round(2.5u-.5stem);
hook_in(0,1,2)(skewed); % opening hook
pos2'(stem,-180); z2'=z2; pos4(vair,-90); pos5(hair,0);
x4=.5w+u; rt x5r=round(w-.5u); y3=.7[y4,y5]; bot y4r=-oo; y5=.57h;
filldraw stroke z2'e{-u,-x_height}...super_arc.e(3,4)
..tension atleast 1.05..{up}z5e; % left stem and arc
v_bulb(5,6); % closing bulb
math_fit(-2/3x_height#*slant+.5hair#+.5u#,2/3ic#);
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Lowercase Greek phi";
beginchar(oct"036",11u#,asc_height#,desc_depth#);
italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi;
adjust_fit(0,0); pickup fine.nib;
numeric light_curve; light_curve=round(.5[stem,curve]-2stem_corr);
pos1(vair,90); pos2(light_curve,180); pos3(vair,270); pos4(light_curve,360);
x1=x3=.5w; lft x2r=round(1.5u-.5light_curve); x4=w-x2;
top y1=x_height+oo; y2=y4=.5[y1,y3]; bot y3=-oo;
filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
& pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl
pos5(hair,0); pos6(hair,0); x5=x6=.5w; top y5=h; bot y6=-d-oo;
filldraw stroke z5e--z6e; % stem
math_fit(-.3x_height#*slant+.5curve#-u#,ic#); penlabels(1,2,3,4,5,6); endchar;
cmchar "Lowercase Greek chi";
beginchar(oct"037",11u#,x_height#,desc_depth#);
italcorr x_height#*slant+.5hair#-1.5u#;
adjust_fit(0,0); pickup fine.nib;
x3=w-x4=2.5u; y3=7/8h; y4=-d+1/8h; numeric theta; theta=angle(z4-z3)+90;
pos1(hair,180); pos2(vair,80); pos3(stem,theta);
pos4(stem,theta); pos5(vair,80); pos6(hair,180);
x1-.5hair=round-.5hair; x6=w-x1; x2=w-x5=u;
y1=y3; top y2r=h+oo; bot y5l=-d-oo; y6=y4;
filldraw stroke z1e{up}...z2e{right}...z3e
---z4e...{right}z5e...{up}z6e; % major diagonal and hooks
x8=w-x7=2u; y7+.5hair=h; y8-.5hair=-d; numeric theta; theta=angle(z7-z8)-90;
pos7(hair,theta); pos8(hair,theta);
filldraw z7l---z8l..z8r---z7r..cycle; % minor diagonal
math_fit((desc_depth#-x_height#)*slant+ic#,ic#);
penlabels(1,2,3,4,5,6,7,8); endchar;
cmchar "Lowercase Greek psi";
beginchar(oct"040",11u#,asc_height#,desc_depth#);
italcorr x_height#*slant;
adjust_fit(0,0); pickup fine.nib; interim superness:=more_super;
x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=round(2.5u-.5stem);
hook_in(0,1,2)(skewed); % opening hook
pos2'(stem,-180); z2'=z2; pos4(vair,-90); pos5(hair,0);
x4=.5w+u; rt x5r=round(w-.5u); y3=.7[y4,y5]; bot y4r=-oo; y5=.57x_height;
filldraw stroke z2'e{-u,-x_height}...super_arc.e(3,4)
..tension atleast 1.05..{up}z5e; % left stem and arc
v_bulb(5,6); % closing bulb
pos7(hair,0); pos8(hair,0); x7=x8=.5w+.5u; top y7=h; bot y8=-d-oo;
filldraw stroke z7e--z8e; % stem
math_fit(-2/3x_height#*slant+.5hair#+.5u#,2/3ic#);
penlabels(0,1,2,3,4,5,6,7,8); endchar;
cmchar "Lowercase Greek omega";
beginchar(oct"041",11u#,x_height#,0);
italcorr x_height#*slant;
adjust_fit(0,0); pickup fine.nib;
pos2(hair,-180); lft x2r=round.5u; y2=y4=y6=y8=bar_height;
y1+.5hair=h; x1=x2+.75u; pos1(hair,angle(2(x1-x2),y1-y2)+90);
pos3(vstem+dw,-90); pos4(hair,0); pos5(vair,90);
pos6(hair,180); pos7(vstem+dw,270); pos8(hair,360);
bot y3r=bot y7r=-oo; top y5r=round(.2[y4,h]+.5vair);
x3=.5[x2,x4]; x7+.25u=.5[x6,x8]; rt x8r=round(w-.5u);
x5+.5stem=round(.5w+.5stem); x5=.5[x4,x6]; rt x4r-lft x6r=min(stem,2hair);
if x4l<x6l: x4l:=x6l:=x5; fi
filldraw circ_stroke z1e{2(x2-x1),y2-y1}...z2e{down}...z3e{right}
...{up}z4e...{left}z5e; % left arc
filldraw stroke z5e{left}...z6e{down}...z7e{right}...{up}z8e; % right arc
v_bulb(8,9); % closing bulb
math_fit(-bar_height#*slant,2/3ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar;
cmchar "Variant lowercase Greek epsilon";
beginchar(oct"042",8u#,x_height#,0);
italcorr x_height#*slant-.5u#;
adjust_fit(0,0); pickup fine.nib;
numeric light_vstem; light_vstem=round(2/3[vair,vstem]);
pos2(light_vstem,90); x2=x8=.5w+.5u; top y2r=h+o;
x1+.5light_vstem=round(w-u); y1=.2[y2,bar_height];
pos1(light_vstem,angle(x1-x2,2(y1-y2))+90); pos3(hair,180); pos4(vair,270);
pos5(hair,360); pos6(vair,450); pos7(hair,540); pos8(light_vstem,630);
lft x3r=round u; x4=x6=.5w; rt x5r=round(w-2.5u); x7=x3;
y3=.5[y2,y4]; y5=bar_height=.5[y4,y6]; y7=.5[y6,y8]; bot y8r=-o;
top y6r-bot y4r=vstem; if y6l<y4l: y6l:=y4l:=y5; fi
x9+.5vair=round(w-.5u); y9=1/3[y8,bar_height];
pos9(vair,angle(x8-x9,2(y8-y9))+90);
filldraw circ_stroke z1e{x2-x1,2(y2-y1)}...pulled_super_arc.e(2,3)(.5superpull)
& super_arc.e(3,4)...{up}z5e; % upper arc
filldraw circ_stroke z9e{x8-x9,8(y8-y9)}...pulled_arc.e(8,7)
& super_arc.e(7,6)...{down}z5e; % lower arc
math_fit(-.5bar_height#*slant-.5u#,ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar;
cmchar "Variant lowercase Greek theta";
beginchar(oct"043",9u#,asc_height#,0);
italcorr .5[bar_height#,x_height#]*slant+.5vair#+.5u#;
adjust_fit(0,0); pickup fine.nib;
numeric light_curve; light_curve=round(.5[stem,curve]);
x0=0; x2-.5stem=round(2.5u-.5stem); hook_in(0,1,2); % opening hook
pos2'(stem,-180); z2'=z2; pos3(stem,-180); pos4(vair,-90);
pos5(light_curve,0); pos6(vair,90); pos7(hair,180); pos8(vair,270);
x3=x2; x4=x6=.5[x3,x5]; rt x5r=round(w-1.5u+.5light_curve);
lft x7r=round(3.25u-.5hair); x8+.5vair=round(w+.5vair-epsilon);
y3=.4x_height; bot y4r=-oo; y5=.5[y4,y6]; top y6r=h+oo;
y7=.5[x_height,h]; y8=.5[bar_height,x_height];
filldraw stroke z2'e..{{interim superness:=hein_super; super_arc.e(3,4)}}
& pulled_arc.e(4,5) & pulled_arc.e(5,6)
...{down}z7e...{4(x8-x7),y8-y7}z8e; % bowl and loop
math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#);
penlabels(0,a,1,2,3,4,5,6,7,8); endchar;
cmchar "Variant lowercase Greek pi";
beginchar(oct"044",14.5u#,x_height#,0);
italcorr x_height#*slant+.5stem#-u#;
adjust_fit(0,0); pi_stroke; % hook and bar
pos4(hair,-180); pos5(hair,-180); pos6(vstem,-90);
pos7(hair,0); pos7'(hair,-180); z7'=z7;
pos8(vstem,-90); pos9(hair,0); pos0(hair,0);
x4=x5+1.5u; lft x5r=round 2u; x6=x4+.5u; lft x7l=round(.5w+.25u-.5hair);
x8=w-4.5u; rt x9r=round(w-1.5u); x0=x9-1.25u;
top y4=top y0=h; y5+.1h=y7-.1h=y9=bar_height; bot y6r=bot y8r=-oo;
filldraw stroke z4e{2(x5-x4),y5-y4}...z5e{down}
...z6e{right}...z7e{up}; % left bowl
filldraw stroke z0e{2(x9-x0),y9-y0}...z9e{down}
...z8e{left}...z7'e{up}; % right bowl
math_fit(-.7x_height#*slant+.5hair#+.5u#,ic#-.5u#);
penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
cmchar "Variant lowercase Greek rho";
beginchar(oct"045",8.25u#,x_height#,desc_depth#);
italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi;
adjust_fit(0,0); pickup fine.nib;
pos2(stem,180); pos3(vair,90); pos4(curve,0); pos5(vair,-90); pos6(stem,-180);
lft x2r=round(1.5u-.5stem); x2=x6; x3=x5=.5[x2,x4];
rt x4r=round(w-1.5u+.5curve);
y2=y4=y6=.5[y3,y5]; top y3r=h+oo; bot y5r=-oo;
filldraw circ_stroke pulled_arc.e(2,3) & pulled_arc.e(3,4)
& pulled_arc.e(4,5) & pulled_arc.e(5,6); % bowl
pos2'(hair,-180); z2'r=z2r; pos1(vstem,-90); pos1'(vstem,90); z1'=z1;
pos0(hair,0); rt x0r=round(w-u); bot y0=-d; bot y1r=round-.9d; x1=x5;
interim superness:=sqrt superness;
filldraw stroke pulled_arc.e(0,1'); filldraw stroke pulled_arc.e(1,2'); % tail
math_fit(desc_depth#*slant+.5stem#-u#,ic#); penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Variant lowercase Greek sigma";
beginchar(oct"046",8u#,x_height#,.5min(desc_depth#,.5x_height#));
italcorr x_height#*slant-.5u#;
adjust_fit(0,0); pickup fine.nib;
numeric heavy_vair; heavy_vair=round(.25[vair,vstem]);
pos1(heavy_vair,-110); pos2(vair,-90);
x1+.5heavy_vair=round(w-u); y1=.1[y2r,bar_height]; x2l=.5w+u; top y2l=h+oo;
filldraw circ_stroke z1e{x2-x1,2(y2-y1)}...{left}z2e; % upper bulb
numeric theta; theta=90-angle(16u,x_height); slope:=-x_height/16u;
pos6(stem,theta); pos7(vair,-90); pos8(vair,-135);
lft x4l=round u; x4r-x4l=round(.5[vair,stem])-fine;
x6=x7=w-2u; x8=.5w+u; y6=.25[y8,y2]; y8=y7+1/8d; bot y7r=-d-oo;
ellipse_set(2l,4l,5l,6l); ellipse_set(2r,4r,5r,6r); y4=y4r;
filldraw circ_stroke z8e{x7-x8,2(y7-y8)}...z7e{right}...z6e
---z5e...{up}z4e...{right}z2e; % main stroke
math_fit(-.5x_height#*slant-.5u#,0); penlabels(1,2,4,5,6,7,8); endchar;
cmchar "Variant lowercase Greek phi";
beginchar(oct"047",12u#,x_height#,desc_depth#);
italcorr .7x_height#*slant;
adjust_fit(0,0); pickup fine.nib;
pos1(hair,-180); x1=x2+.75u; top y1=h;
pos2(hair,-180); lft x2r=round .5u; y2=bar_height;
pos3(vstem,-90); x3=.5(w+u); bot y3r=-oo;
pos4(hair,0); rt x4r=round(w-.5u); y4=y2;
pos5(vstem,90); x5=.52[x6,x4]; top y5r=h+oo;
pos6(hair,180); x6=x7; y6=1/3h;
pos7(stem,180); lft x7r=round(1/3w+.5u-.5stem); y7-.5stem=-d-o;
filldraw circ_stroke z7e---z6e...{right}z5e...{down}z4e...{left}z3e
...{up}z2e...{3(x1-x2),y1-y2}z1e; % bowl and stem
math_fit(-.3x_height#*slant,ic#); penlabels(1,2,3,4,5,6,7); endchar;